package com.itheima;

public class 认识HTTP协议 {
    /**
     * 概念：Hyper Text Transfer Protocol，超文本传输协议，规定了浏览器和服务器之间数据传输的规则。
     *
     * 特点：
     * 1.基于TCP协议：面向连接，安全
     * 2.基于请求-响应模型的：一次请求对应一次响应
     * 3.HTTP协议是无状态的协议：对于事务处理没有记忆能力。每次请求-响应都是独立的。
     * 缺点：多次请求间不能共享数据。
     * 优点：速度快
     */

    /*
    POST /brand HTTP/1.1
    Accept: application/json,text/plain，*\/*
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9Content-Length: 161
    Content-Type: application/json;charset=UTF-8
    Cookie: Idea-8296eb32=841b16f0-0cfe-495a-9cc9-d5aaa71501a6;3SESSIONID=OFDE4E430876BD9C5C955F06
    Host: localhost:8080
     *\/
    User-Agent: Mozilla/5.0 (Windows NT 10.0; win64; x64) ApplewebKit/537.36 (KHTIML，like Gecko)Chrome/....*\/

    {"status":1 , "brandName":"黑马" , "companyName":"黑马程序员" ,"id" :"" , "description": "黑马程序员"}
     */

    /*请求头内容:
    Host	请求的主机名
    User-Agent	浏览器版本，例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79，IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko
    Accept	表示浏览器能接收的资源类型，如text/*，image/*或者*\/*表示所有；
    Accept-Language	表示浏览器偏好的语言，服务器可以据此返回不同语言的网页；
    Accept-Encoding	表示浏览器可以支持的压缩类型，例如gzip, deflate等。
    Content-Type	请求主体的数据类型。
    Content-Length	请求主体的大小（单位：字节）。
     */

    /**
     * HTTP-请求就是一个超长的字符串,数据格式:
     *
     * 请求方式-GET:请求参数在请求行中，没有请求体，如：/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。
     * 请求方式-POST: 请求参数在请求体中，POST请求大小是没有限制的。
     *
     * 1.请求行:请求数据第一行(请求方式GET/POST、资源路径URL、协议HTTP1.1 , 如果是GET请求url后面附带有数据有?键1=值1&键2=值2...)
     * 2.请求头:第二行开始，格式key：value
     * 3.空行
     * 4.请求体:POST请求体是存请求参数的JSON字符串
     */


    /*
    HTTP/1.1 200 OK
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Tue,10 May 2022 07:51:07 GMT
    Keep-Alive: timeout=60
    Connection: keep-alive

    [{id: 1, brandName: "阿里巴巴" , companyName:"腾讯计算机系统有限公司",description:"玩玩玩"}]
     */

    /**
     * 请求响应介绍-HTTP响应格式
     * 响应行：响应数据第一行(协议、状态码、描述)
     * 响应头：第二行开始，格式key：value
     * 响应体：最后一部分，存放响应数据(JSON字符串)
     */

    //数据传输过程中传的是字符串,浏览器-服务器各自封装/解析成对象

    /*
    状态码
    1xx	响应中-临时状态码，表示请求已经接收，告诉客户端应该继续请求或者如果它已经完成则忽略它。
    2xx	成功-表示请求已经被成功接收，处理已完成。
    3xx	重定向-重定向到其他地方；让客户端再发起一次请求以完成整个处理。
    4xx	客户端错误-处理发生错误，责任在客户端。如: 请求了不存在的资源、客户端未被授权、禁止访问等。
    5xx	服务器错误-处理发生错误，责任在服务端。如：程序抛出异常等。

    200	客户端请求成功。
    404	请求资源不存在，一般是URL输入有误，或者网站资源被删除了。
    500	服务器发生不可预期的错误。
     */

    /*
    响应头内容

    Content-Type	表示该响应内容的类型，例如 text/html 或 application/json ...
    Content-Length	表示该响应内容的长度（字节数）。
    Content-Encoding	表示该响应压缩算法，例如gzip。
    Cache-Control	指示客户端应如何缓存，例如max-age=300表示可以最多缓存300秒。
    Set-Cookie	告诉浏览器为当前页面所在的域设置cookie。
     */
}
